package com.xiaoxin_project.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaoxin_project.mapper.UserMapper;
import com.xiaoxin_project.netty.ChatHandler;
import com.xiaoxin_project.netty.ChatMsg;
import com.xiaoxin_project.pojo.Users;
import com.xiaoxin_project.pojo.bo.UsersBo;
import com.xiaoxin_project.pojo.vo.FriendsVo;
import com.xiaoxin_project.pojo.vo.MyFriendsVo;

import java.util.List;

public interface UserService{

    /**
     * 判断用户名是否存在
     *
     * @param username
     * @return
     */
    boolean queryUsernameIsExist(String username);

    /**
     * 查询用户是否存在（用户名和密码是否正确）
     */
    Users queryUserForLogin(String username, String Pwd);

    /**
     * 注册
     */
     Users saveUser(Users users) throws Exception;

    /**
     * 更新用户头像
     */
    Users updateUserInfo(Users users);

    /**
     * 查找用户信息
     */
    Users queryById(String userId);

    /**
     * 搜索朋友的前置条件
     * @param myUserId
     * @param friendUsername
     * @return
     */
    Integer precondttionSearchFriends(String myUserId,String friendUsername);

    /**
     * 根据用户名查询用户对象
     */
    Users queryUserInfoByUsername(String username);


    /**
     * 添加好友请求
     */
    void sendFriendRequest(String myUserId,String friendUsername);

    /**
     *展示好友请求的列表
     */
    List<FriendsVo> queryFriendRequestList(String acceptUserId);

    /**
     * 删除好友请求记录
     */
    void deleteFriendRequest(String sendUserId,String acceptUserId);

    /**
     * 通过好友请求
     * 1.保存好友
     * 2.逆向保存好友 (双方保存好友)
     * 3.删除好友请求记录
     */
    void passFriendRequest(String sendUserId,String acceptUserId);

    /**
     * 返回好友列表
     */
    List<MyFriendsVo> queryMyFriends(String myUserId);

    /**
     *保存消息到数据库
     */
    String saveMsg(ChatMsg chatMsg);

    /**
     *批量签收消息
     */
    void updateMsgSigned(List<String> msgIdList);

    /**
     *获取未签收的消息列表
     */
    List<com.xiaoxin_project.pojo.ChatMsg> getUnReadMsgList(String acceptUserId);

    /**
     * 查询总用户数量 username
     *
     * @return
     */
    Users sum();



}
